/**
 * <copyright>
 * </copyright>
 *
 * $Id$
 */
package org.hl7.v3;

import java.util.List;

import org.eclipse.emf.common.util.EList;

import org.eclipse.emf.ecore.EObject;

import org.eclipse.emf.ecore.util.FeatureMap;

/**
 * <!-- begin-user-doc -->
 * A representation of the model object '<em><b>Struc Doc Title</b></em>'.
 * <!-- end-user-doc -->
 *
 * <p>
 * The following features are supported:
 * <ul>
 *   <li>{@link org.hl7.v3.StrucDocTitle#getMixed <em>Mixed</em>}</li>
 *   <li>{@link org.hl7.v3.StrucDocTitle#getGroup <em>Group</em>}</li>
 *   <li>{@link org.hl7.v3.StrucDocTitle#getContent <em>Content</em>}</li>
 *   <li>{@link org.hl7.v3.StrucDocTitle#getSub <em>Sub</em>}</li>
 *   <li>{@link org.hl7.v3.StrucDocTitle#getSup <em>Sup</em>}</li>
 *   <li>{@link org.hl7.v3.StrucDocTitle#getBr <em>Br</em>}</li>
 *   <li>{@link org.hl7.v3.StrucDocTitle#getFootnote <em>Footnote</em>}</li>
 *   <li>{@link org.hl7.v3.StrucDocTitle#getFootnoteRef <em>Footnote Ref</em>}</li>
 *   <li>{@link org.hl7.v3.StrucDocTitle#getID <em>ID</em>}</li>
 *   <li>{@link org.hl7.v3.StrucDocTitle#getLanguage <em>Language</em>}</li>
 *   <li>{@link org.hl7.v3.StrucDocTitle#getMediaType <em>Media Type</em>}</li>
 *   <li>{@link org.hl7.v3.StrucDocTitle#getStyleCode <em>Style Code</em>}</li>
 * </ul>
 * </p>
 *
 * @see org.hl7.v3.V3Package#getStrucDocTitle()
 * @model extendedMetaData="name='StrucDoc.Title' kind='mixed'"
 * @generated
 */
public interface StrucDocTitle extends EObject {
	/**
	 * Returns the value of the '<em><b>Mixed</b></em>' attribute list.
	 * The list contents are of type {@link org.eclipse.emf.ecore.util.FeatureMap.Entry}.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Mixed</em>' attribute list isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Mixed</em>' attribute list.
	 * @see org.hl7.v3.V3Package#getStrucDocTitle_Mixed()
	 * @model unique="false" dataType="org.eclipse.emf.ecore.EFeatureMapEntry" many="true"
	 *        extendedMetaData="kind='elementWildcard' name=':mixed'"
	 * @generated
	 */
	FeatureMap getMixed();

	/**
	 * Returns the value of the '<em><b>Group</b></em>' attribute list.
	 * The list contents are of type {@link org.eclipse.emf.ecore.util.FeatureMap.Entry}.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Group</em>' attribute list isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Group</em>' attribute list.
	 * @see org.hl7.v3.V3Package#getStrucDocTitle_Group()
	 * @model unique="false" dataType="org.eclipse.emf.ecore.EFeatureMapEntry" many="true" transient="true" volatile="true" derived="true"
	 *        extendedMetaData="kind='group' name='group:1'"
	 * @generated
	 */
	FeatureMap getGroup();

	/**
	 * Returns the value of the '<em><b>Content</b></em>' containment reference list.
	 * The list contents are of type {@link org.hl7.v3.StrucDocTitleContent}.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Content</em>' containment reference list isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Content</em>' containment reference list.
	 * @see org.hl7.v3.V3Package#getStrucDocTitle_Content()
	 * @model containment="true" transient="true" volatile="true" derived="true"
	 *        extendedMetaData="kind='element' name='content' namespace='##targetNamespace' group='#group:1'"
	 * @generated
	 */
	EList<StrucDocTitleContent> getContent();

	/**
	 * Returns the value of the '<em><b>Sub</b></em>' containment reference list.
	 * The list contents are of type {@link org.hl7.v3.StrucDocSub}.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Sub</em>' containment reference list isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Sub</em>' containment reference list.
	 * @see org.hl7.v3.V3Package#getStrucDocTitle_Sub()
	 * @model containment="true" transient="true" volatile="true" derived="true"
	 *        extendedMetaData="kind='element' name='sub' namespace='##targetNamespace' group='#group:1'"
	 * @generated
	 */
	EList<StrucDocSub> getSub();

	/**
	 * Returns the value of the '<em><b>Sup</b></em>' containment reference list.
	 * The list contents are of type {@link org.hl7.v3.StrucDocSup}.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Sup</em>' containment reference list isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Sup</em>' containment reference list.
	 * @see org.hl7.v3.V3Package#getStrucDocTitle_Sup()
	 * @model containment="true" transient="true" volatile="true" derived="true"
	 *        extendedMetaData="kind='element' name='sup' namespace='##targetNamespace' group='#group:1'"
	 * @generated
	 */
	EList<StrucDocSup> getSup();

	/**
	 * Returns the value of the '<em><b>Br</b></em>' containment reference list.
	 * The list contents are of type {@link org.hl7.v3.StrucDocBr}.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Br</em>' containment reference list isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Br</em>' containment reference list.
	 * @see org.hl7.v3.V3Package#getStrucDocTitle_Br()
	 * @model containment="true" transient="true" volatile="true" derived="true"
	 *        extendedMetaData="kind='element' name='br' namespace='##targetNamespace' group='#group:1'"
	 * @generated
	 */
	EList<StrucDocBr> getBr();

	/**
	 * Returns the value of the '<em><b>Footnote</b></em>' containment reference list.
	 * The list contents are of type {@link org.hl7.v3.StrucDocTitleFootnote}.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Footnote</em>' containment reference list isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Footnote</em>' containment reference list.
	 * @see org.hl7.v3.V3Package#getStrucDocTitle_Footnote()
	 * @model containment="true" transient="true" volatile="true" derived="true"
	 *        extendedMetaData="kind='element' name='footnote' namespace='##targetNamespace' group='#group:1'"
	 * @generated
	 */
	EList<StrucDocTitleFootnote> getFootnote();

	/**
	 * Returns the value of the '<em><b>Footnote Ref</b></em>' containment reference list.
	 * The list contents are of type {@link org.hl7.v3.StrucDocFootnoteRef}.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Footnote Ref</em>' containment reference list isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Footnote Ref</em>' containment reference list.
	 * @see org.hl7.v3.V3Package#getStrucDocTitle_FootnoteRef()
	 * @model containment="true" transient="true" volatile="true" derived="true"
	 *        extendedMetaData="kind='element' name='footnoteRef' namespace='##targetNamespace' group='#group:1'"
	 * @generated
	 */
	EList<StrucDocFootnoteRef> getFootnoteRef();

	/**
	 * Returns the value of the '<em><b>ID</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>ID</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>ID</em>' attribute.
	 * @see #setID(String)
	 * @see org.hl7.v3.V3Package#getStrucDocTitle_ID()
	 * @model id="true" dataType="org.eclipse.emf.ecore.xml.type.ID"
	 *        extendedMetaData="kind='attribute' name='ID'"
	 * @generated
	 */
	String getID();

	/**
	 * Sets the value of the '{@link org.hl7.v3.StrucDocTitle#getID <em>ID</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>ID</em>' attribute.
	 * @see #getID()
	 * @generated
	 */
	void setID(String value);

	/**
	 * Returns the value of the '<em><b>Language</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Language</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Language</em>' attribute.
	 * @see #setLanguage(String)
	 * @see org.hl7.v3.V3Package#getStrucDocTitle_Language()
	 * @model dataType="org.eclipse.emf.ecore.xml.type.NMTOKEN"
	 *        extendedMetaData="kind='attribute' name='language'"
	 * @generated
	 */
	String getLanguage();

	/**
	 * Sets the value of the '{@link org.hl7.v3.StrucDocTitle#getLanguage <em>Language</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Language</em>' attribute.
	 * @see #getLanguage()
	 * @generated
	 */
	void setLanguage(String value);

	/**
	 * Returns the value of the '<em><b>Media Type</b></em>' attribute.
	 * The default value is <code>"text/x-hl7-title+xml"</code>.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Media Type</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Media Type</em>' attribute.
	 * @see #isSetMediaType()
	 * @see #unsetMediaType()
	 * @see #setMediaType(String)
	 * @see org.hl7.v3.V3Package#getStrucDocTitle_MediaType()
	 * @model default="text/x-hl7-title+xml" unsettable="true" dataType="org.eclipse.emf.ecore.xml.type.String"
	 *        extendedMetaData="kind='attribute' name='mediaType'"
	 * @generated
	 */
	String getMediaType();

	/**
	 * Sets the value of the '{@link org.hl7.v3.StrucDocTitle#getMediaType <em>Media Type</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Media Type</em>' attribute.
	 * @see #isSetMediaType()
	 * @see #unsetMediaType()
	 * @see #getMediaType()
	 * @generated
	 */
	void setMediaType(String value);

	/**
	 * Unsets the value of the '{@link org.hl7.v3.StrucDocTitle#getMediaType <em>Media Type</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #isSetMediaType()
	 * @see #getMediaType()
	 * @see #setMediaType(String)
	 * @generated
	 */
	void unsetMediaType();

	/**
	 * Returns whether the value of the '{@link org.hl7.v3.StrucDocTitle#getMediaType <em>Media Type</em>}' attribute is set.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return whether the value of the '<em>Media Type</em>' attribute is set.
	 * @see #unsetMediaType()
	 * @see #getMediaType()
	 * @see #setMediaType(String)
	 * @generated
	 */
	boolean isSetMediaType();

	/**
	 * Returns the value of the '<em><b>Style Code</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Style Code</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Style Code</em>' attribute.
	 * @see #setStyleCode(List)
	 * @see org.hl7.v3.V3Package#getStrucDocTitle_StyleCode()
	 * @model dataType="org.eclipse.emf.ecore.xml.type.NMTOKENS" many="false"
	 *        extendedMetaData="kind='attribute' name='styleCode'"
	 * @generated
	 */
	List<String> getStyleCode();

	/**
	 * Sets the value of the '{@link org.hl7.v3.StrucDocTitle#getStyleCode <em>Style Code</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Style Code</em>' attribute.
	 * @see #getStyleCode()
	 * @generated
	 */
	void setStyleCode(List<String> value);

} // StrucDocTitle
